package com.example.kotlinlanguage

import android.util.Log

/**
 * 版权：卓灿教育集团 版权所有
 * author :赵航
 * @e-mail: zhaohangcn@gmail.com
 * time：2020/12/28
 * describe ：Kotlin中 ?、!!、?:、:: 、->符号的简单说明
 *
 *
 *
 * "?"加在变量名后，系统在任何情况不会报它的空指针异常。
 * "!!"加在变量名后，如果对象为null，那么系统一定会报异常！
 *  ?：
 *对象A ?: 对象B 表达式，意思为，当对象 A值为 null 时，那么它就会返回后面的对象 B。
 */
val roomList: ArrayList<String>? = null

fun main() {
    //val roomList: ArrayList<KTBean>? = null
    //if (roomList?.size > 0) {
    //	Log.d("TAG", "-->> 列表数不是0")
    //}

    //对象A ?: 对象B 表达式，意思为，当对象 A值为 null 时，那么它就会返回后面的对象 B。
    if (roomList?.size ?: 0 > 0) {
        Log.d("TAG", "-->> 列表数不是0")
    }
    if (roomList?.size!! > 0) {
        Log.d("TAG", "-->> 列表数不是0")
    }
    if (roomList!!.size > 0) {
        Log.d("TAG", "-->> 列表数不是0")
    }

    //如果我们需要调用其他 Class 中的某一个方法是：
//    var d = Test()
//    println(lock("param1", "param2", d::getResult))
    //  为了防止作用域混淆 ， :: 调用的函数如果是类的成员函数或者是扩展函数，必须使用限定符,比如this
    //var list = listOf(1, 2, 3, 4, 5)
    //        println(list.filter(this::isOdd))
}
